import {Ref} from 'vue';

export enum LoginStateEnum {
    LOGIN,
    REGISTER,
    RESET_PASSWORD,
    MOBILE,
    QR_CODE,
    SSO
}

const currentState = ref(LoginStateEnum.LOGIN);

export function useLoginState() {
    function setLoginState(state: LoginStateEnum) {
        currentState.value = state;
    }

    const getLoginState = computed(() => currentState.value);

    function handleBackLogin() {
        setLoginState(LoginStateEnum.LOGIN);
    }

    return {
        setLoginState,
        getLoginState,
        handleBackLogin,
    };
}

export function useFormValid<T extends Object = any>(formRef: Ref<any>) {
    async function validForm() {
        const form = unref(formRef);
        if (!form) return;
        const data = await form.validate();
        return data as T;
    }

    return {
        validForm,
    };
}
